home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue44 / survive / script2.SQL < prev   
Encoding:
Text File  |  1999-02-25  |  3.9 KB  |  90 lines

  1. declare @ProcessDate datetime
  2. select @ProcessDate = '27 Sep 1999'
  3.  
  4. SELECT EmpEmployeeID, JbcMaxHourlyRate, JbcMaxAnnualRate, PscIntervalType, StpStepNo, StpRate, StpEffDate, StpInterval
  5.   FROM Employees, JobCodes, PayScales, PaySteps
  6.   WHERE EmpDateOfNextPayReview <= @ProcessDate AND
  7.         EmpJobCode = JbcJobCode AND
  8.         EmpPayScaleCode = PscPayScaleCode AND
  9.         EmpPayScaleCode = StpPayScaleCode AND
  10.         EmpStepNo + 1 = StpStepNo 
  11.  
  12. SELECT EmpEmployeeID, JbcMaxHourlyRate, JbcMaxAnnualRate, PscIntervalType, StpStepNo, StpRate, StpEffDate, StpInterval
  13.   FROM Employees, JobCodes, PayScales, PaySteps
  14.   WHERE EmpDateOfNextPayReview <= @ProcessDate AND
  15.         EmpJobCode = JbcJobCode AND
  16.         EmpPayScaleCode = PscPayScaleCode AND
  17.         EmpPayScaleCode = StpPayScaleCode AND
  18.         EmpStepNo + 1 = StpStepNo AND
  19.         StpEffDate = (SELECT Max(StpEffDate) FROM PaySteps 
  20.                         WHERE StpPayScaleCode = EmpPayScaleCode AND StpStepNo = EmpStepNo + 1 AND StpEffDate <= @ProcessDate)
  21. DECLARE @EmployeeID int
  22. DECLARE @HourlyOrSalary char(1)
  23. DECLARE @OriginalReviewDate datetime
  24. DECLARE @PayPeriod smallint
  25. DECLARE @ScheduledWorkHours float
  26. DECLARE @MaxHourlyRate money
  27. DECLARE @MaxAnnualRate money
  28. DECLARE @IntervalType char(1)
  29. DECLARE @NewStepNo smallint
  30. DECLARE @NewHourlyPayRate money
  31. DECLARE @NewReviewDate datetime
  32. DECLARE @StepInterval smallint
  33. DECLARE @NewAnnualPayRate money
  34. DECLARE @NewWeeklyPayRate money
  35. DECLARE @NewPeriodPayRate money
  36.  
  37. DECLARE EmpPaySteps INSENSITIVE CURSOR FOR
  38.   SELECT EmpEmployeeID, EmpHourlyOrSalary, EmpDateOfNextPayReview, EmpPayPeriod, EmpScheduledWorkHours, 
  39.          JbcMaxHourlyRate, JbcMaxAnnualRate, PscIntervalType, StpStepNo, StpRate, StpInterval
  40.   FROM Employees, JobCodes, PayScales, PaySteps
  41.   WHERE EmpDateOfNextPayReview <= @ProcessDate AND
  42.         EmpJobCode = JbcJobCode AND
  43.         EmpPayScaleCode = PscPayScaleCode AND
  44.         EmpPayScaleCode = StpPayScaleCode AND
  45.         EmpStepNo + 1 = StpStepNo AND
  46.         StpEffDate = (SELECT Max(StpEffDate) FROM PaySteps 
  47.                         WHERE StpPayScaleCode = EmpPayScaleCode AND StpStepNo = EmpStepNo + 1 AND StpEffDate <= @ProcessDate)
  48.   FOR READ ONLY
  49.  
  50. OPEN EmpPaySteps
  51. FETCH NEXT FROM EmpPaySteps
  52.   INTO @EmployeeID, @HourlyOrSalary, @OriginalReviewDate, @PayPeriod, @ScheduledWorkHours, 
  53.        @MaxHourlyRate, @MaxAnnualRate, @IntervalType, @NewStepNo, @NewHourlyPayRate, @StepInterval
  54. WHILE @@fetch_status = 0
  55. BEGIN
  56.  
  57.   /* Check for pay caps.  Do not increase above pay cap, if any. */
  58.   IF @MaxHourlyRate IS NOT NULL AND @NewHourlyPayRate > @MaxHourlyRate
  59.     SELECT @NewHourlyPayRate = @MaxHourlyRate
  60.  
  61.   /* Compute new pay rates */
  62.   SELECT @NewAnnualPayRate = @NewHourlyPayRate * @ScheduledWorkHours * @PayPeriod
  63.   SELECT @NewWeeklyPayRate = @NewAnnualPayRate / 52
  64.   SELECT @NewPeriodPayRate = @NewHourlyPayRate * @ScheduledWorkHours
  65.   SELECT @NewReviewDate = CASE @IntervalType 
  66.                             WHEN "D" THEN dateadd(day, @StepInterval, @OriginalReviewDate)
  67.                             WHEN "W" THEN dateadd(week, @StepInterval, @OriginalReviewDate)
  68.                             WHEN "M" THEN dateadd(month, @StepInterval, @OriginalReviewDate)
  69.                           END
  70.  
  71.   SELECT @NewHourlyPayRate, @NewAnnualPayRate, @NewWeeklyPayRate, @NewPeriodPayRate, @NewReviewDate
  72. /*
  73.   UPDATE Employees SET
  74.     EmpStepNo = @NewStepNo,
  75.     EmpHourlyPayRate = @NewHourlyPayRate, 
  76.     EmpAnnualPayRate = @NewAnnualPayRate,
  77.     EmpWeeklyPayRate = @NewWeeklyPayRate,
  78.     EmpPeriodPayRate = @NewPeriodPayRate,
  79.     EmpDateOfNextPayReview = @NewReviewDate
  80.     WHERE EmpEmployeeID = @EmployeeID
  81. */
  82.  
  83.   FETCH NEXT FROM EmpPaySteps
  84.     INTO @EmployeeID, @HourlyOrSalary, @OriginalReviewDate, @PayPeriod, @ScheduledWorkHours, 
  85.          @MaxHourlyRate, @MaxAnnualRate, @IntervalType, @NewStepNo, @NewHourlyPayRate, @StepInterval
  86. END
  87.  
  88. DEALLOCATE EmpPaySteps
  89.    
  90.